package ceura.ia.practica.heuristica;

import ceura.ia.practica.Point;
import static java.lang.Math.*;

/**
 * Estratégia de heurística Manhattan, que constiste en multiplicar por una
 * constante la suma de la distancia el valor absoluto en x y en y.
 *
 * @author Sergio Redondo y Jorge Madrid.
 */
public class HeuristicaManhattan implements HeuristicaStrategy {

    /**
     *
     * @param inicial Punto inicial.
     * @param puntoFinal Punto final.
     * @return El coste calculado por la heurística.
     */
    @Override
    public int calculateHeuristica(Point inicial, Point puntoFinal) {
        int sumX, sumY;
        sumX = abs(puntoFinal.x - inicial.x);
        sumY = abs(puntoFinal.y - inicial.y);
        return 10 * (sumX + sumY);
    }
}
